package demo.aop.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

import java.util.Arrays;


@Aspect
@Component
public class JoinPointAspect {

    //JoinPoint 接口提供了一系列有用的方法，
    // 比如 getArgs()（返回方法参数）、
    // getThis()（返回代理对象）、
    // getTarget()（返回目标对象）、
    // getSignature()（返回正在被通知的方法相关信息）和 toString() （打印出正在被通知的方法的有用信息）
    @Before("execution (* demo.aop.controller.JoinPointTestController.before(..))")
    public void jp3(JoinPoint point) {
        System.out.println(Arrays.toString(point.getArgs()));
        System.out.println(point.getThis().getClass());
        System.out.println(point.getTarget().getClass());
    }

}
